import axios from 'axios'
import { useRouter } from 'vue-router';

// 引入 Notify 样式组件 
// 这是一个提示框组件，注意他是一个函数组件，所以组件页需要在额外导入，否则不会按需导入
import { Notify } from 'vant';

let baseURL = '';
switch (process.env.NODE_ENV) {
	case 'production':
		baseURL = 'http://47.94.148.165:3001/api';
		break;
	case 'development':
		baseURL = '/api'
		break;
}

// 做一个 默认的请求配置
const instance = axios.create({
	baseURL: baseURL,
	timeout: 3000,
	headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});

// 添加请求拦截器
instance.interceptors.request.use(function(config){
	// 在发送请求之前做些什么
	if(localStorage.getItem('token')) {
		if(config && config.headers) {
			config.headers.token = localStorage.getItem('token')
		}
	}
	return config
},function (error) {
	// 对请求错误做些什么
	return Promise.reject(error)
});

// 添加响应拦截器
instance.interceptors.response.use(function(response){
	console.log(response);
	
	// 对响应数据做点什么
	if(response.data && response?.data?.code == 200) {
		// 如果后端接口返回有token 数据,就将token 数据保存到保存到本地,作为一个token 有效期的的一个验证
		if(response.data?.data?.token){
			localStorage.setItem('token',response.data?.data?.token)
		}
	}else{
		// 如果后端返回的状态码是10119,表示token 失效,返回到登录页
		if (response.data?.code == '10119') {
            localStorage.removeItem('token');
            const router = useRouter();
            router.push('/login')
        }
	}
	    //  将后端的message 信息作为一个提示
		Notify({ type: response.data?.code == 200 ? 'success' : 'danger', message: response.data?.message });
	return  response.data
},function(error){
 // 对响应错误做点什么
    //此处服务器没有响应,可能是断网了或者服务器宕机了.
    return Promise.reject(error);
})

export default instance




















